package com.artPreter.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.artPreter.mapper.PlateTypeMapper;
import com.artPreter.pojo.PlateType;
import com.artPreter.pojo.TemplateDetail;
import com.artPreter.mapper.TemplateDetailMapper;
import com.artPreter.service.ITemplateDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

/**
 * <p>
 * 模板详情表 服务实现类
 * </p>
 *
 * @author jarvis
 * @since 2024-11-18
 */
@Service
public class TemplateDetailServiceImpl extends ServiceImpl<TemplateDetailMapper, TemplateDetail> implements ITemplateDetailService {

    @Autowired
    private PlateTypeMapper plateTypeMapper;

    /**
     * 添加模板
     * @param templateDetail
     */
    @Override
    public void add(TemplateDetail templateDetail) {
        String uuid = UUID.randomUUID().toString();

        if(templateDetail.getPlateId()!=null){
            LambdaQueryWrapper<PlateType> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(PlateType::getTypeId,templateDetail.getPlateId());
            List<PlateType> plateTypeList = plateTypeMapper.selectList(queryWrapper);
            if(!plateTypeList.isEmpty()){
                PlateType plateType = plateTypeList.get(0);
                // 模板类型名称
                templateDetail.setTempTypeName(plateType.getName());
                // 内容类型 1:简介类型 11:简介+简介 12:简介+艺术家列表 13:简介+艺术品列表 2:艺术家列表 3:艺术家列表 4:图片类型 5:资讯类型 6:超链接
                templateDetail.setContentType(plateType.getContentType());
                //
                templateDetail.setPlateType(plateType.getPlateType());
            }
        }

        templateDetail.setTempId(uuid);
        templateDetail.setStatus(1);
        this.baseMapper.insert(templateDetail);
    }

    /**
     * 修改模板
     * @param templateDetail
     */
    @Override
    public void edit(TemplateDetail templateDetail) {
        templateDetail.setTempId(null);
        if(templateDetail.getPlateId()!=null){
            LambdaQueryWrapper<PlateType> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(PlateType::getTypeId,templateDetail.getPlateId());
            List<PlateType> plateTypeList = plateTypeMapper.selectList(queryWrapper);
            if(!plateTypeList.isEmpty()){
                PlateType plateType = plateTypeList.get(0);
                // 模板类型名称
                templateDetail.setTempTypeName(plateType.getName());
                // 内容类型 1:简介类型 11:简介+简介 12:简介+艺术家列表 13:简介+艺术品列表 2:艺术家列表 3:艺术家列表 4:图片类型 5:资讯类型 6:超链接
                templateDetail.setContentType(plateType.getContentType());
                //
                templateDetail.setPlateType(plateType.getPlateType());
            }
        }
        this.baseMapper.updateById(templateDetail);

    }
    /**
     * 删除模板
     * @param templateDetail
     */
    @Override
    public void delete(TemplateDetail templateDetail) {
        templateDetail.setTempId(null);
        templateDetail.setStatus(0);
        this.baseMapper.updateById(templateDetail);
    }

    @Override
    public IPage<TemplateDetail> getPage(Integer currentPage, Integer size, TemplateDetail templateDetail) {
        IPage<TemplateDetail> templateDetailIPage = new Page<>(currentPage, size);
        LambdaQueryWrapper<TemplateDetail> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TemplateDetail::getStatus,1);
        queryWrapper.orderByDesc(TemplateDetail::getId);
        if(templateDetail.getName()!=null|| !templateDetail.getName().isEmpty()){
            queryWrapper.like(TemplateDetail::getName,templateDetail.getName());

        }
        templateDetailIPage = this.baseMapper.selectPage(templateDetailIPage, queryWrapper);
        return templateDetailIPage;
    }

    @Override
    public List<TemplateDetail> getList(TemplateDetail templateDetail) {
        LambdaQueryWrapper<TemplateDetail> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TemplateDetail::getStatus,1);
        if(templateDetail.getPlateType()!=null){
            queryWrapper.eq(TemplateDetail::getPlateType,templateDetail.getPlateType());
        }
        List<TemplateDetail> templateDetailList = this.baseMapper.selectList(queryWrapper);
        return templateDetailList;
    }
}
